<?php

/**
 * Description of Manager
 *
 * @author prometheus
 */
class XQL_Connection_DatabaseManager extends x10_Manager
{
    public $xName = 'XQL adatbázis kapcsolat kezelő';

	/**
	 * Azokat a kapcsolat-osztályokat és beállításaikat tartalmazza, melyeket
	 * a létrehozás után automatikusan példányosítani kell.
	 * @var Object
	 */
	protected $connections;

	/**
	 * Az alapértelmezett kapcsolat álneve.
	 * @var String
	 */
	protected $default = '';

	public function __construct(x10_Config $config)
	{
		parent::__construct($config);
		$this->registerProvider(new x10_Provider_Descriptor('XQL_Connection_Provider'));

		$this->connections = $this->config->getConfigKey('connections');

		$csa = (array)$this->connections;
		$this->default = array_shift($csa);

		$default = $this->config->getConfigKey('default');
		if (isset($default)) $this->default = $default;

		foreach ($this->connections as $cls=>$cfg)
		{
			$prov = new XQL_Connection_Provider(
				new x10_Config(
					array(
						'connection'		=> $cls,
						'connectionCreate'	=> TRUE,
						'settings'			=> $cfg
					)
				)
			);
			$this[$prov->get()->getAlias()] = $prov;
		}

		x10::ifDedicated($this);
		x10::dedicate($this);
	}

	/**
	 * Kiválasztja az aktív kapcsolatot.
	 * @param String $alias
	 */
	public function setActive($alias)
	{
		if (isset($this[$alias]))
		{
			$this->default = $alias;
		}
		else
		{
			// TODO: exception
		}
	}

	/**
	 * @return XQL_Connection
	 */
	public function getActive()
	{
		return $this[$this->default]->get();
	}
}
?>
